/*
 * File:   main.cpp
 * Author: teitel
 *
 * Created on September 29, 2009, 7:52 PM
 */

#include <stdlib.h>
#include <iostream>
#include <string>
#include <Juego.h>

using namespace std;

/*
 *
 */

void mostrarMenu ();
void inicializar ();
void configurar();
bool consultar();
bool jugar (int turno);
void listar();
void resultados();
Juego juego;
int intplayers;

int main() {
    int opcion = 0;
    string noImporta ="";
    int jug;
    bool partida;
    do{
        system("clear");
        do{
            mostrarMenu();
            cin >> opcion;
        }while (opcion <= 0 || opcion > 7);


        switch(opcion){
            case 1:
                 inicializar();
                break;
            case 2:
                configurar();
                jug=1;
                break;
            case 3:
                if (consultar())
                    cout << "Es una palabra valida" << endl;
                else
                    cout << "No es una palabra valida" << endl;

                cout << "Presione [1 + ENTER] para continuar... " << flush;
                cin >> noImporta;

                break;
            case 4:
                listar();
                break;
            case 5:
                resultados();
                break;
            case 6:
                do {
                    if (jug < intplayers ){
                        partida = jugar(jug);
                        jug++;
                     }
                    else {
                        partida = jugar(jug);
                        jug=1;
                     }


                }while (partida==true);
        }
    }while (opcion != 7);

    return (EXIT_SUCCESS);
}

void mostrarMenu (){
    system("clear");
    cout << "Seleccione una opcion:" << endl;
    cout << "1) Inicializar"<< endl;
    cout << "2) Configurar"<< endl;
    cout << "3) Consulta"<< endl;
    cout << "4) Listar"<< endl;
    cout << "5) Resultados"<< endl;
    cout << "6) Jugar (despues reemplaza a consultar)"<< endl;
    cout << "7) Salir"<< endl;
}

/*En este procedimiento se incializa el diccionario
 Cada opcion corresponde a un idioma*/
void inicializar(){
    int opcion = 0;
    string path = "";

    do{
        system("clear");
        cout << "Seleccione un diccionario:" << endl;
        cout << "1) Ingles" << endl;
        cout << "2) Español (sin acentos)" << endl;
        cin >> opcion;
    }while (opcion <= 0 || opcion > 2);

    switch(opcion){
        case 1: //Ingles
            //path = "/home/teitel/Desktop/dictionary_english.txt";
            path = "/home/seba/NetBeansProjects/trunk/Patentes/dictionary_english.txt";
           // path = "c:\\dictionary_english.txt";
            break;
        case 2: //Español
            //path = "/home/teitel/Desktop/dictionary_english.txt";
            path = "/home/seba/NetBeansProjects/trunk/Patentes/diccionario_espanol.txt";
            // path = "c:\\dictionary_english.txt";
            break;
    }
    juego.Inicializar(path);
}

void configurar (){
    string patente;
    int participantes;

    if(juego.diccionarioCargado() ){
        do{
            //cout << "Presione [1 + ENTER] para continuar... " << flush;
            //cin >> patente;
            system("clear");
            cout << "Ingrese el numero de jugadores:" << endl;
            cin >> participantes;
            cout << "\nIngrese la patente con la que se va a jugar:" << endl;
            cin >> patente;
        }while (patente == "" || patente.length() != 3 || participantes == 0);

        juego.Configurar(patente, participantes);
        intplayers = participantes;
    }
    else
        cout << "No se cargo ningun diccionario!";
}

bool consultar (){
    string palabra = "";

    system ("clear");
    cout << "Ingrese la palabra a consultar:" << endl;
    cin >> palabra;

    return juego.Consulta(palabra,1);
}
bool jugar (int turno){
    string palabra = "";

    system ("clear");
    printf ("Jugador%d\n",turno);
    cout << "Ingrese la palabra a consultar:" << endl;
    cin >> palabra;

    return juego.Consulta(palabra,turno);
}
void listar(){
    string noImporta;

    if(juego.diccionarioCargado())
        juego.Listar();
    else
        cout << "Debe cargar el diccionario para poder listarlo" << endl;

    cout << "Presione [1 + ENTER] para continuar... " << flush;
    cin >> noImporta;
}

void resultados(){
    system ("clear");
    juego.Resultado();
}